#include <stdio.h>

struct test3_st {
    int a;
    double b;
    char c;
}__attribute__((packed)); // 设置为不对齐

typedef struct test2_st {
	char m;
	float n;
} test2_st; // 现在test2_st 等价于 struct test2_st

struct test_st {
	char a;
    char e;
	struct test2_st d; // 结构体成员展开对齐
	short b;
	long c;
    //struct test_st st; // 并不能包含同类型的结构体
    struct test_st *p; // 可以包含结构体的指针
};

int main(void)
{
	struct test_st t;
    struct test3_st t3;
	
    printf("%ld\n", sizeof(t));
	printf("%ld\n", sizeof(t3));
	printf("%p %p %p %p %p\n", &t.a, &t.e, &t.d, &t.b, &t.c);

	return 0;
}

